class FeatureTransform
{
public:
    FeatureTransform() {}
    FeatureTransform(int gridScale, const NeighborhoodFeatureSet& featureSet);
    void transform(const Frame &frame, vector<double> &out) const;
private:
    int _gridScale;
    NeighborhoodFeatureSet _featureSet;

    friend OutputDataStream & operator<< (OutputDataStream &os, const FeatureTransform &transform);
    friend InputDataStream & operator>> (InputDataStream &is, FeatureTransform &transform);
};

OutputDataStream & operator<< (OutputDataStream &os, const FeatureTransform &transform);
InputDataStream & operator>> (InputDataStream &is, FeatureTransform &transform);